import { app, BaseWindow, ipcMain } from 'electron'

/**
 * 关闭窗口
 * @return void
 * @example closeWindow();
 */
export function closeWindow():void {
    ipcMain.on("window-close", function () {
        app.exit();
    });
}

/**
 * 最大化窗口
 * @param mainWindow baseWindow窗口
 * @return void
 * @example maxWindow(window:BaseWindow);
 */
export function maxWindow(mainWindow: BaseWindow):void {
    ipcMain.on('window-max', () => {
        if (mainWindow.isMaximized()) {
            mainWindow.restore();//恢复窗口大小
        } else {
            mainWindow.maximize(); //最大化
        }
    })
}
/**
 * 最小化主窗口。
 * @param {BaseWindow} mainWindow - 要最小化的主窗口对象，它应该是一个实现了minimize方法的对象。
 * @return void
 * @example maxWindow(window:BaseWindow);
 */
export function minWindow(mainWindow: BaseWindow):void {
    ipcMain.on('window-mini', () => {
        mainWindow.minimize()
    })
}

/**
 * 全屏化窗口
 * @param mainWindow 全屏化窗口对象
 * @return void
 * @example fullscreenWindow(window:BaseWindow);
 */
export function fullscreenWindow(mainWindow: BaseWindow):void {
    ipcMain.on('window-fullscreen', () => {
        mainWindow.setFullScreen(true)
    })
}

/**
 * 退出全屏化
 * @param mainWindow 退出全屏化窗口对象
 * @return void
 * @example notFullscreenWindow(mainWindow:BaseWindow);
 */
export function notFullscreenWindow(mainWindow: BaseWindow):void {
    ipcMain.on('window-notFullscreen', () => {
        if (mainWindow.isFullScreen()) {
            mainWindow.setFullScreen(false)
        }
    })
}